package com.nicho.service;

import java.util.ArrayList;
import java.util.Map;

import com.nicho.dao.StudentDAO;
import com.nicho.pojo.Course;
import com.nicho.pojo.Student;

/*
 * @Author: 姜东浩
 * @Date: 2021-11-11 14:38:27
 * @LastEditors: 姜东浩
 * @LastEditTime: 2021-11-11 22:26:00
 * @Description:学生业务类 
 */
public class StudentService {

    StudentDAO studentDAO = new StudentDAO();

    /**
     * @description: 学生登录信息判断
     * @param {Student} student
     * @return 验证成功返回学生对象，失败返回null
     * @author: 姜东浩
     */
    public Student studentLogin(Student student) {

        return studentDAO.studentLogin(student);

    }

    /**
     * @description: 修改自己的密码
     * @param {String} newPassword
     * @return 修改密码操作结束后的对应提示信息
     * @author: 姜东浩
     */
    public String updatePassword(String newPassword) {

        if (studentDAO.updatePassword(newPassword) == 1) {
            return "修改成功";
        } else {
            return "修改失败";
        }

    }

    /**
     * @description: 通过课程编号判断是否有此课程
     * @param {String} courseId
     * @return 有返回课程对象，没有返回null
     * @author: 姜东浩
     */
    public Course existCourseById(String courseId) {

        return studentDAO.existCourseById(courseId);

    }

    /**
     * @description: 遍历课程表集合，返回可选课程的Map
     * @return 返回选课Map<课程编号，课程余量>
     * @author: 姜东浩
     */
    public Map<String, Integer> chooseCourseMap() {

        return studentDAO.chooseCourseMap();

    }

    /**
     * @description: 打印一个Map
     * @param {Map<String,Integer>} map
     * @author: 姜东浩
     */
    public void printMap(Map<String, Integer> map) {

        studentDAO.printMap(map);

    }

    /**
     * @description: 通过key获取value
     * @param {Map<String,Integer>} map
     * @param {String}              key
     * @return 有此key返回它的value，否则返回-1
     * @author: 姜东浩
     */
    public int getMapValue(Map<String, Integer> map, String key) {

        return studentDAO.getMapValue(map, key);

    }

    /**
     * @description: 判断自己是否选了这门课
     * @param {String} courseId
     * @return 自己选了这门课返回1，没选返回-1
     * @author: 姜东浩
     */
    public int hadThisCourse(String courseId) {

        if (studentDAO.hadThisCourse(courseId) == 1) {
            return 1;
        } else {
            return -1;
        }

    }

    /**
     * @description: 获得自己选的全部课程集合
     * @return 返回自己选的全部课程
     * @author: 姜东浩
     */
    public ArrayList<Course> getMyCourseList() {

        return studentDAO.getMyCourseList();

    }

    /**
     * @description: （简单打印）打印自己的选课集合
     * @param {ArrayList<Course>} myCourseList
     * @author: 姜东浩
     */
    public void printMyCourseList(ArrayList<Course> myCourseList) {

        studentDAO.printMyCourseList(myCourseList);

    }

    /**
     * @description: （全部信息）打印自己的选课集合
     * @param {ArrayList<Course>} myCourseList
     * @author: 姜东浩
     */
    public void printMyCourseListAM(ArrayList<Course> myCourseList) {

        studentDAO.printMyCourseListAM(myCourseList);

    }

    /**
     * @description: 学生选择一门课程
     * @param {String} courseId
     * @return 添加操作后的提示信息
     * @author: 姜东浩
     */
    public String chooseCourse(String courseId) {
        if (studentDAO.plusCourseCNum(courseId) == 1) {
            if (studentDAO.addCourseInAStuList(studentDAO.existCourseById(courseId)) == 1) {
                if (studentDAO.addMeToTeaList(studentDAO.existCourseById(courseId)) == 1) {
                    return "添加成功";
                } else {
                    return "将选此课程的人数加一成功,向自己的课程列表添加一门课程成功，将我添加到我这门课的讲师的学生列表中失败";
                }
            } else {
                return "将选此课程的人数加一成功,向自己的课程列表添加一门课程失败";
            }
        } else {
            return "将选此课程的人数加一失败";
        }

    }

    /**
     * @description: 学生移除一门课程
     * @param {String} courseId
     * @return 删除操作后的提示信息
     * @author: 姜东浩
     */
    public String deleteCourse(String courseId) {
        if (studentDAO.subtractCourseCNum(courseId) == 1) {
            if (studentDAO.removeCourseInAStuList(studentDAO.existCourseById(courseId)) == 1) {
                if (studentDAO.removeMeToTeaList(studentDAO.existCourseById(courseId)) == 1) {
                    return "移除成功";
                } else {
                    return "将选此课程的人数减一成功,向自己的课程列表添减一门课程成功，将我移除到我这门课的讲师的学生列表中失败";
                }
            } else {
                return "将选此课程的人数减一成功,向自己的课程列表添减一门课程失败";
            }
        } else {
            return "将选此课程的人数减一失败";
        }

    }

}